﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using _1.Presentacion.Principal;
using _1.Presentacion.Properties;
using _1.Presentacion.Utilidades;
using _2.Logica.Finanzas;
using _4.Modelado.Finanzas;

namespace _1.Presentacion.Modulo_Finanzas
{
    public partial class Razon_Movimiento : Päntalla_Base
    {
        public Razon_Movimiento()
        {
            InitializeComponent();
        }

        private void Razon_Movimiento_Load(object sender, EventArgs e)
        {
            try
            {
                CargaDatos();
                CargaTiposMovimiento();
                Validaciones.CargarUsuarioLogueado(lbl_Usuario, lbl_Fecha);
            }
            catch
            {
                MessageBox.Show(Resources.MensajeErrorSistema);
            }
       

        }

 

        #region Metodos

        private void Guardar()
        {
            var logica = new RazonMovimientoL();
            

            CargaDatos();
            Validaciones.LimpiarControles(this);
        }



        private void CargaDatos()
        {
            try
            {
                var logica = new RazonMovimientoL();

                List<RazonMovimiento> listaRazon= logica.Razon_MovimientoConsultar();
                //Recorre la lista de Usuarios para asignar a cada celda del Datagrid
                //Los valores devueltos por la consulta
                dgvMovimiento.Rows.Clear();
                for (int i = 0; i < listaRazon.Count; i++)
                {
                    dgvMovimiento.Rows.Add();
                    dgvMovimiento.Rows[i].Cells[0].Value = listaRazon[i].iPK_RazonMovimiento;
                    dgvMovimiento.Rows[i].Cells[1].Value = listaRazon[i].sRazonMovDescripcion;
                    dgvMovimiento.Rows[i].Cells[2].Value = listaRazon[i].sFKTipoMov_RazonAjuste;
                    dgvMovimiento.Rows[i].Cells[3].Value = listaRazon[i].sTipoMovimientoNombre;
    
                }

            }
            catch (Exception exc)
            {

                MessageBox.Show("Eror al cargar información " + exc, "Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
            }
        }

        
        private void CargaTiposMovimiento()
        {
            var logica = new RazonMovimientoL();


            cbTipoMovimiento.DataSource = logica.LlenarComboTiposMovimiento();
            cbTipoMovimiento.ValueMember = "PK_Tipo_Movimiento";
            cbTipoMovimiento.DisplayMember = "TipoMovimientoNombre";


        }
         private void P_Limpiar()
         {
             txtRazonMovDescripcion.Text = String.Empty;
             txtPKRazonMovimiento.Text = "0";
             
         }

        #endregion

        private void btnEliminar_Click_1(object sender, EventArgs e)
        {
            try
            {
                if (dgvMovimiento.RowCount > 0)
                {
                    int indiceFila = dgvMovimiento.SelectedCells[0].RowIndex;
                    string sDescripcion = dgvMovimiento[1, indiceFila].Value.ToString();
                  
          
                    #region Elimina Razon Movimiento

                    DialogResult r = MessageBox.Show("Desea eliminar el registro: " + sDescripcion, "Validaciones",
                                                     MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

                    if (r == DialogResult.OK)
                    {
                          var obj = new RazonMovimiento();
                          obj.iPK_RazonMovimiento = Convert.ToInt32(dgvMovimiento[0, indiceFila].Value);

                        var logica = new RazonMovimientoL();
                        logica.Razon_MovimientoEliminar(obj);
                        CargaDatos();
                        MessageBox.Show("El registro se ha eliminado guardado exitósamente", "Transacción", MessageBoxButtons.OK);
                        P_Limpiar();
                            
                      
                        
                        

                    }

                    #endregion
                }
            }
            catch (Exception exc)
            {

                MessageBox.Show("No se pudo eliminar el registro " + exc, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnGuardar_Click_1(object sender, EventArgs e)
        {
            try
            {
                var obj = new RazonMovimiento();

                obj.iPK_RazonMovimiento = Convert.ToInt32(txtPKRazonMovimiento.Text);
                obj.sRazonMovDescripcion = txtRazonMovDescripcion.Text;
                obj.sFKTipoMov_RazonAjuste = cbTipoMovimiento.SelectedValue.ToString();
               
                var logica = new RazonMovimientoL();
                logica.Razon_MovimientoGuardar(obj);
                CargaDatos();
                MessageBox.Show("El registro ha sido guardado exitosamente", "Transacción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                btnLimpiar_Click(sender, e);
                

            
            }
            catch
            {
                MessageBox.Show(Resources.MensajeErrorSistema);
            }

        }

        private void btnLimpiar_Click(object sender, EventArgs e)
        {

            try
            {
                Validaciones.LimpiarControles(this);
                CargaTiposMovimiento();
                txtPKRazonMovimiento.Text = "0";
                
            }
            catch
            {
                MessageBox.Show(Resources.MensajeErrorSistema);
            }
        }

        private void btnHome_Click_1(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Minimized;
        }

        private void dgvMovimiento_CellDoubleClick_1(object sender, DataGridViewCellEventArgs e)
        {

            try
            {
                int indicefila = dgvMovimiento.SelectedCells[0].RowIndex;

                if (indicefila < 0) return;

                txtRazonMovDescripcion.Text = dgvMovimiento.Rows[indicefila].Cells["RazonMovDescripcion"].Value.ToString();
                txtPKRazonMovimiento.Text = dgvMovimiento.Rows[indicefila].Cells["PK_RazonMovimiento"].Value.ToString();
                cbTipoMovimiento.SelectedValue =(dgvMovimiento.Rows[indicefila].Cells["FKTipoMov_RazonAjuste"].Value);
                txtRazonMovDescripcion.Focus();
            }
            catch
            {
                MessageBox.Show(Resources.MensajeErrorSistema);
            }
        }

        private void txtBusquedaDescriIgnore_TextChanged_1(object sender, EventArgs e)
        {
            try
            {


            }
            catch
            {
                MessageBox.Show(Resources.MensajeErrorSistema);
            }


        }

        private void txtRazonMovDescripcion_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnGuardar_Click_1(sender, e);
            }
        }


    }
}
